草庐IT

c++ - DrawText VS TextOut Win32

全部标签

windows - 64 位应用程序与 32 位进程通信

我有一个使用32位第三方库的32位应用程序。现在我必须将我的应用程序设为64位,以便它可以利用64位地址空间(大内存)。由于我无法将32位库加载到64位应用程序进程中,我正在考虑在第三方库上创建32位可执行包装器,并使用IPC(命名管道/套接字)从我的64位应用程序进行通信。所以我的问题是他们这样做会有什么问题吗?此外,如果我必须在64位系统上安装我的应用程序,所有与我的应用程序相关的文件都将被复制到“c:\ProgramFiles”目录。现在我可以将我的32位第三方exe包装器保留在同一个“c:\ProgramFiles”中,还是我需要复制到“c:\ProgramFiles(x86)

windows - 从多个目录加载 Win32 模块

我有一个程序将插件存储在多个目录中,如下所示:root/core/bin/app.execore.dllplugin.dllsupport.dlla/bin/a.dlla_support.dll在此示例中,a.dll导入了core.dll、support.dll和a_support.dll(它们在导入表中的顺序)。a_support.dll导入support.dll。我可以更改除支持模块之外的所有模块,这些模块是第三方库的重新发布。我的代码调用LoadLibraryEx(name,NULL,LOAD_WITH_ALTERED_SEARCH_PATH)来加载每个插件。对于core.dll

c++ - 在 Windows 服务和 win32 应用程序 C++ 之间使用 IPC

我已经编写了一个Windows服务,我想将它与一个win32应用程序(桌面)进行通信(IPC),谁能告诉我我应该怎么做才能进行这种通信。在我的例子中,我的服务是服务器,其他进程是客户端。每当用户在他的机器上启动它时,进程应该与服务建立连接。 最佳答案 我编写了支持您描述的命名管道的服务。我不需要做任何特别的事情来设置客户端打开和读/写命名管道的权限。我发现以下Microsoft文章在开发我的代码时很有用:“完整的服务示例”:http://msdn2.microsoft.com/en-us/library/bb540476(VS.85

c++ - 包括来自 C++ 的 C-DLL

这感觉像是一个菜鸟问题,所以如果是骗人的,请指出正确的位置:)我尝试将用C编写的DLL包含到C++程序中。它没有用;gcc说test.cpp:xxx:error:toomanyargumentstofunction.这是一个最小的工作示例:DLL函数的包装器:/*myWrapper.h*/#ifndef_MYWRAPPER_H#define_MYWRAPPER_H#include#ifdef__cplusplusextern"C"{#endifexternFARPROCEXPORTED_functionNameP;intGetDLLpointers();#ifdef__cplusplu

c++ - 在 C++ (Win32) 中快速获取 Windows 应用程序屏幕截图的方法?

当我的应用程序需要获取其他Windows应用程序的屏幕截图时,我遇到了问题。我正在使用win32api'PrintWindow'中的函数,但效果不佳。它很慢,其他应用程序窗口中的一些组件显示为黑色矩形。Devrexster有一个名为DExpose2的应用程序(Mac-OS风格的任务切换器)。它可以非常快速地获取其他应用程序的屏幕截图,非常快,甚至可以连续获取这些屏幕截图。我猜它是使用Direct3D来获取应用程序的屏幕截图,而不是像我正在使用的那样使用GDI。是否可以为此目的使用Direct3D?如果可能,哪种方法最简洁? 最佳答案

windows - 工具栏中按钮的大小 - win32 程序

我正在用我的位图图像创建工具栏,但按钮大小有问题。此图像大小为20/20像素。我创建了一个工具栏,并通过以下代码将按钮大小设置为20/20像素:SendMessage(hToolbar,TB_SETBUTTONSIZE,0,MAKELPARAM(20,20));并且我将配色方案设置为红色和绿色,这样当光标悬停在按钮上时,按钮框架会清晰显示。这是当光标停留在按钮上时我看到的:如您所见,按钮大小不是20\20像素,而是26像素。那为什么会这样呢?还有一个问题,当鼠标光标在它上面时,是否可以取消突出显示按钮,而不是我将设置热门图像列表(通过TB_SETHOTIMAGELIST消息),所以当光

c - 调试断言失败。表达式(流!= NULL)

我收到以下错误:DebugAssertionFailed.Expression(stream!=NULL)File:f:\dd\vctools/crty_bld/self_x86\crt\src\fwrite.c创建4个线程时CPU使用率100%。该代码最初在一段时间内运行良好,然后出现此错误。该代码是使用WSAWaitforMultipleEvents()的UDP单服务器/多客户端应用程序。编辑:调试器在fwrite.c中触发断点if(size==0||count==0)return0;//justcheckingforstream!=NULLhere//restofthevalid

CreateProcess() 似乎不受 lpCurrentDirectory 的影响

我目前正在尝试使用CreateProcess()API启动一个进程:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx我遇到的主要问题是子进程似乎是在父进程的工作目录下启动的,不管lpCurrentDirectory参数中指示的是什么.提供更多细节:lpCurrentDirectory似乎适用于简单的命令行程序,但对于更复杂的程序(想想GUI),它似乎没有被考虑在内,因为所有资源依赖项都是从调用目录进程中搜索的。我可以尝试来回切换调用进程的工作目录,但第二个问题是被调用进程不在目标

windows - 在 Win32 应用程序中使用 Windows 窗体

我需要创建一个Win32应用程序。我正在使用VisualStudio。我真的很喜欢在Windows窗体中设计我的应用程序,它允许以图形方式设计我的窗口。但是,我不能(仅)使用Windows窗体。我必须使用Win32应用程序。现在,当我创建Win32应用程序时,我无法想象以图形方式设计我的窗口。有没有办法将Windows窗体合并到Win32应用程序中?还是图形化设计Win32窗口?(如果有一种方法可以以图形方式设计Win32应用程序GUI而只有我想不出来,我将不胜感激这样做的资源或方法。) 最佳答案 在Win32应用程序中,您可以包含

c - 如何在 Windows 7 X64 SP1(x64 模式)下执行直接系统调用?

我试图模拟syscall指令在Windows7X64(SP1)上的工作方式,因此我使用MinGW64编写了一个64位GCC示例。据我所知,对于Windows,所有系统调用入口点都在ntdll.dll或ntdll32.dll中(在这种情况下,我们只关心ntdll.dll)。Status=NtCreateFile(&FileHandle,//returnedfilehandle(GENERIC_WRITE|SYNCHRONIZE),//desiredaccess&ObjectAttributes,//ptrtoobjectattributes&Iosb,//ptrtoI/Ostatusbl